﻿using System;
using System.Collections.Generic;

namespace Web_App___AWS_ELB_Monitor.Entities
{
    public class DataPoint
    {
        public DateTimeOffset TimeStamp { get; set; }
        public double Value { get; set; }
    }

    public class DatePointGraph
    {
        public DateTimeOffset TimeStamp { get; set; }
        public IEnumerable<double> Value { get; set; }
    }

    public class KeyedDataPointCollection
    {
        public string Name { get; set; }
        public IEnumerable<DataPoint> Data { get; set; }
    }

    public enum AnalyticsValueType
    {
        Sum,
        Average,
        Minimum,
        Maximum,
        SampleCount
    }

    public enum CloudWatchDefaultDimensionsEC2
    {
        InstanceType,
        InstanceId,
        ImageId,
        AutoScalingGroupName
    }

    public enum CloudWatchDefaultDimensionsELB
    {
        LoadBalancerName,
        AvailabilityZone,
        LoadBalancer
    }

    /// <summary>
    /// You can use the currently available dimensions for EC2 instances (for example, ImageID or InstanceType) in order to refine the metrics returned.
    /// </summary>
    public enum CloudWatchDefaultMetricEC2
    {
        CPUUtilization,
        NetworkIn,
        NetworkOut,
        DiskWriteOps,
        DiskReadBytes,
        DiskReadOps,
        DiskWriteBytes
    }

    /// <summary>
    /// You can use the currently available dimensions for Elastic Load Balancing to refine the metrics returned by a query. For example, you could use HealthyHostCount  and dimensions LoadBalancerName and AvailabilityZone to get the Average number of healthy Instances behind the specified LoadBalancer within the specified Availability Zone for a given period of time. 
    /// </summary>
    public enum CloudWatchDefaultMetricELB
    {
        /// <summary>
        /// Time taken between a request and the corresponding response as seen by the load balancer. 
        /// Units: Seconds
        /// Valid Statistics: Minimum, Maximum, Average and Count
        /// </summary>        
        Latency,
        /// <summary>
        /// The number of requests processed by the LoadBalancer.
        /// Units: Count/Second
        /// Valid Statistics: Minimum, Maximum and Sum
        /// </summary>
        RequestCount,
        HealthyHostCount,
        UnHealthyHostCount
    }
}